package org.infoset.xml;

import java.net.URI;

/**
 * This interface represents an implementation context.  It provides
 * the facilities to create documents, elements, names, and namespaces.
 * @author <a href="mailto:alex@milowski.com">R. Alexander Milowski</a>
 */
public interface Infoset extends NameTable {

   enum Axis {
      ChildAxis,
      DescendantAxis,
      ParentAxis,
      AncestorAxis,
      FollowingAxis,
      PrecedingAxis,
      FollowingSiblingAxis,
      PrecedingSiblingAxis,
      AttributeAxis,
      SelfAxis,
      DescendantOrSelfAxis,
      AncestorOrSelfAxis
   }
   
   //DocumentConstructor createDocumentConstructor();
   
   ItemConstructor createItemConstructor();
   
   /**
    * Constructs an item constructor primed with the specified base URI.
    * @param baseURI the base URI to use for the items created.
    */
   ItemConstructor createItemConstructor(URI baseURI);
   
}

